Caches and Direct Memory Access (DMA) transfers are used to improve processor core performance in systems where the data accessed by the processor core is located in slow or far memory. Caches are used to manage processor core accesses to the data information. A usual cache strategy is to bring a line of data into a cache on any data request from the processor core that causes a cache miss. To reduce the degradation due to cache misses, prefetch instructions or prefetch engines are used. The prefetch mechanisms support data fetching to the cache before the data is actually requested by a processor core operation.
In DMA-based systems without caches, all memory transfers can be managed by a DMA engine. The absence of the caches eliminates the cache-miss penalties. However, implementation of the DMA engine results in software re-architecture to create processor core/DMA synchronization points. The DMA engine can support advanced features like 2-dimensional/3-dimensional transfers and scatter/gather transfers. Modern Digital Signal Processors (DSP) systems can include both DMA engines and caches with some level of prefetch support.